Плохо! Плохо!:  0
Показано с 1 по 2 из 2

Тема: [MV] Изменение разрешения игры на ходу

  1. #1
    Супер-модератор Аватар для dirge
    Информация о пользователе
    Регистрация
    25.02.2013
    Сообщений
    924
    Репутация: 79 Добавить или отнять репутацию

    По умолчанию [MV] Изменение разрешения игры на ходу

    Изменение разрешения игры на ходу


    Автор: dirge
    Версия: 1.1
    Описание: Позволяет менять разрешение игры через вызов скрипта в ивенте. Изменяет разрешение прямо вовремя игры.

    Спойлер Плагин:
    Код:
    /*=============================================================================
     * ScreenChanger.js
     * Version: 1.1
     *=============================================================================*/
    
    /*:
     * =============================================================================
     * @plugindesc v1.1 Изменение разрешения через скриптовый вызов в ивенте.
     * @author Dirge
     *
     * @param Screen Width
     * @desc Ширина по-умолчанию после первого запуска.
     * Default: 816
     * @default 816
     *
     * @param Screen Height
     * @desc Высота по-умолчанию после первого запуска.
     * Default: 624
     * @default 624
     *
     * @help
     * Вызов скрипта в ивентах для изменения разрешения:
     * sChange_Resolution(w, h);
     * Где w - ширина.
     * Где h - высота.
     * Так же могут пригодиться такие скриптовые команды:
     * SceneManager._screenWidth - текущая ширина игрового экрана
     * SceneManager._screenHeight - текущая высота игрового экрана
     * =============================================================================*/
    
    
    var _Screen_Changer_Parameters = PluginManager.parameters('ScreenChanger');
    
    /*=============================================================================
     * Config Manager
     *=============================================================================*/
    ConfigManager.screenWidth    = Number(ConfigManager.screenWidth || _Screen_Changer_Parameters['Screen Width']);
    ConfigManager.screenHeight   = Number(ConfigManager.screenHeight || _Screen_Changer_Parameters['Screen Height']);
    ConfigManager.boxWidth       = Number(ConfigManager.boxWidth || _Screen_Changer_Parameters['Screen Width']);
    ConfigManager.boxHeight      = Number(ConfigManager.boxHeight || _Screen_Changer_Parameters['Screen Height']);
    
    
    /* Alias */
    var _Screen_Changer_ConfigManager_makeData = ConfigManager.makeData;
    ConfigManager.makeData = function() {
    	var config = _Screen_Changer_ConfigManager_makeData.call(this);
    	config.screenWidth = this.screenWidth;
    	config.screenHeight = this.screenHeight;
    	config.boxWidth   = this.boxWidth;
    	config.boxHeight  = this.boxHeight;
    	return config;
    };
    
    /* Alias */
    var _Screen_Changer_ConfigManager_applyData = ConfigManager.applyData;
    ConfigManager.applyData = function(config) {
    	this.screenWidth = this.readValue(config, 'screenWidth');
    	this.screenHeight = this.readValue(config, 'screenHeight');
    	this.boxWidth = this.readValue(config, 'boxWidth');
    	this.boxHeight = this.readValue(config, 'boxHeight');
    	_Screen_Changer_ConfigManager_applyData.call(this, config);
    };
    
    /* NEW */	
    ConfigManager.readValue = function(config, name) {
    	var value = config[name];
            if (value !== undefined) {
              return Number(value);
            };
    };
    
    /* NEW */
    sGameBoxResize = function() {
    	var resizeWidth = SceneManager._screenWidth - window.innerWidth;
    	var resizeHeight = SceneManager._screenHeight - window.innerHeight;
    	window.moveBy(-1 * resizeWidth / 2, -1 * resizeHeight / 2);
    	window.resizeBy(resizeWidth, resizeHeight);
    };
    
    /* Alias */	
    _Screen_Changer_SceneManager_run = SceneManager.run;
    SceneManager.run = function(sceneClass) {
    	ConfigManager.load();
    	SceneManager._screenWidth  = ConfigManager.screenWidth || Number(_Screen_Changer_Parameters['Screen Width']);
    	SceneManager._screenHeight = ConfigManager.screenHeight || Number(_Screen_Changer_Parameters['Screen Height']);
    	SceneManager._boxWidth     = ConfigManager.boxWidth || Number(_Screen_Changer_Parameters['Screen Width']);
    	SceneManager._boxHeight    = ConfigManager.boxHeight || Number(_Screen_Changer_Parameters['Screen Height']); 	
    	_Screen_Changer_SceneManager_run.call(this, sceneClass);
    	sGameBoxResize();
    };
    
    var fullScreen_Resize_Switch = false
    /* NEW */
    sChange_Resolution = function(width, height){
    	
    	ConfigManager.screenWidth    = width;
    	ConfigManager.screenHeight   = height;
    	ConfigManager.boxWidth       = width;
    	ConfigManager.boxHeight      = height;
    	ConfigManager.save();
    	
    	SceneManager._screenWidth    = width;
            SceneManager._screenHeight   = height;
            SceneManager._boxWidth       = width;
            SceneManager._boxHeight      = height;
    
    	Graphics.width               = width;
    	Graphics.height              = height;
    
            Graphics.boxWidth            = width;
            Graphics.boxHeight           = height;
    	
    	if (!Graphics._isFullScreen()) {
    	        fullScreen_Resize_Switch = true;
    	} else {
    		sGameBoxResize();
    	};
    	
        $gameMap._needsRefresh = true;
        SceneManager.goto(Scene_Map);
    };
    
    /* Alias */	
    _Screen_Changer_Graphics_onWindowResize = Graphics._onWindowResize;
    Graphics._onWindowResize = function() {
    	_Screen_Changer_Graphics_onWindowResize.call(this);
    	if (fullScreen_Resize_Switch) {
    		sGameBoxResize();
    		fullScreen_Resize_Switch = false;
    	};
    };


    Установка стандартна, закинуть в папку /js/plugins в папке вашего проекта, создав предварительно там файл с названием ScreenChanger.js
    Вся остальная информация по использованию есть в хэлпе плагина.

    Решил выложить отдельно, так как возможно я его как-нить получше доработаю, а может и нет.
    Быстро-тесты проблем не выявили, если чего найдете - скажите мне, попробую исправить. Так же не знаю как там с совместимостью с другими плагинами которые задают разрешение до игры, лучше их выпилить, если имеются, так как этот плагин имеет такую же функцию.
    Последний раз редактировалось dirge; 02.04.2016 в 23:32.

  2. #2
    Маститый Аватар для Yuryol
    Информация о пользователе
    Регистрация
    06.03.2014
    Адрес
    Красноярск
    Сообщений
    1,420
    Записей в дневнике
    44
    Репутация: 60 Добавить или отнять репутацию

    По умолчанию

    крутота! спасибо огромное! щас уже поздно,завтра потестю.

    Потестил, всё отлично, теперь наокнец-то можно чтоб каждый игрок настраивал разрешения под себя, а то у меня монитор 4:3 а у большинства 16:9
    Последний раз редактировалось Yuryol; 03.04.2016 в 12:20.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
[MV] Изменение разрешения игры на ходу